/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelo.persona;

/**
 *
 * @author Yarel1
 */
public class conexion {

    protected final String URL = "jdbc:derby://localhost:1527/Persona";
    protected final String usuario = "Yarel1";
    protected final String password = "yacase";
    protected final String DRIVER = "org.apache.derby.jdbc.ClientDriver";
    private Connection conexionBD;
    private PreparedStatement pdst;
    persona p = new persona();
    ResultSet objC = null;

    public conexion() {
        try {
            Class.forName(DRIVER);
            this.conexionBD = DriverManager.getConnection(URL, usuario, password);
            this.conexionBD.setAutoCommit(false);
            System.out.println("Conexion en ejecución");
        } catch (Exception e) {
            java.util.logging.Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, e);
        }
    }

    public boolean insertarUsuario(persona p) {
        boolean resp = false;
        int consul = 0;

        try {
            String sql = "Insert into persona(nombre,edad,genero, direccion,telefono)VALUES (?,?,?,?,?)";
            pdst = this.conexionBD.prepareStatement(sql);
            pdst.setString(1, p.nombre);
            pdst.setInt(2, p.edad);
            pdst.setString(3, p.genero);
            pdst.setString(4, p.direccion);
            pdst.setInt(5, p.telefono);
            consul = pdst.executeUpdate();
            this.conexionBD.commit();
            if (consul > 0) {
                resp = true;
            }
        } catch (Exception e) {
            java.util.logging.Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, e);
        }
        return resp;
    }

    public boolean eliminarPersona(persona p) {
        boolean resp = false;
        int consul = 0;
        try {
            String sql = "delete from persona where nombre =?";
            pdst = this.conexionBD.prepareStatement(sql);
            pdst.setString(1, p.nombre);
            consul = pdst.executeUpdate();
            this.conexionBD.commit();
            if (consul > 0) {
                resp = true;
            }
        } catch (Exception e) {
        }
        return true;
    }

    public void consultarPersona(persona p) {

        try {
            String sql = "select * from persona where nombre = ?";
            pdst = this.conexionBD.prepareStatement(sql);

            pdst.setString(1, p.nombre);
            objC = pdst.executeQuery();
            while (objC.next()) {
                p.setNombre(objC.getString(1));
                p.setEdad(objC.getInt(2));
                p.setGenero(objC.getString(3));
                p.setDireccion(objC.getString(4));
                p.setTelefono(objC.getInt(5));
            }
            objC.close();
            conexionBD.close();
        } catch (Exception e) {
        }
    }

    public boolean update(persona p) {
        boolean resp = false;
        int consul = 0;
        try {
            String sql = "Update persona set edad=?,genero=? ,direccion=?, telefono=? where nombre =?";
            pdst = this.conexionBD.prepareStatement(sql);
            pdst.setString(5, p.nombre);
            pdst.setInt(1, p.edad);
            pdst.setString(2, p.genero);
            pdst.setString(3, p.direccion);
            pdst.setInt(4, p.telefono);

            consul = pdst.executeUpdate();
            this.conexionBD.commit();
            if (consul > 0) {
                resp = true;

            }
        } catch (Exception e) {
            System.out.println("aqui esta el error" + e.getMessage());
        }
        return resp;
    }
}
